package org.lanqiao.tjut.dao;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import org.lanqiao.tjut.bean.ParamBean;
import org.lanqiao.tjut.bean.StudentBean;

public interface IStudentDao {
	/**
	 * 通过主键ID查询学生信息
	 * 
	 * @param stuId
	 *            主键ID
	 * @return 学生信息实体类对象
	 */
	public StudentBean selectStudentInfoById(Integer stuId);

	/**
	 * 通过主键ID查询学生信息结果集
	 * 
	 * @param stuId
	 *            主键ID
	 * @return 学生信息结果集
	 */
	public List<StudentBean> selectStudentInfoById2(StudentBean stuB);

	/**
	 * 通过主键ID查询学生信息结果集
	 * 
	 * @param stuId
	 *            主键ID
	 * @return 学生信息结果集
	 */
	public List<StudentBean> selectAllStudentInfo();

	/**
	 * 新增学生信息
	 * 
	 * @param stuB
	 *            新增实体参数对象
	 * @return 新增操作结果
	 */
	public int saveStudentInfo(StudentBean stuB);

	/**
	 * 修改学生信息
	 * 
	 * @param stuB
	 *            实体参数对象
	 * @return 修改操作结果
	 */
	public int updateStudentInfo(StudentBean stuB);

	/**
	 * 删除学生信息
	 * 
	 * @param stuId
	 *            主键字段
	 * @return 删除操作结果
	 */
	public int deleteStudentInfoById(Integer stuId);

	/**
	 * 通过动态集合条件查询学生信息
	 * 
	 * @param stuB
	 *            动态集合条件实体对象
	 * @return 查询的学生信息结果集
	 */
	public List<StudentBean> selectStudentInfoByParas(StudentBean stuB);
	
	/**
	 * 新增学生信息(非空处理)
	 * 
	 * @param stuB
	 *            新增实体参数对象
	 * @return 新增操作结果
	 */
	public int insertStudentInfoNotNull(StudentBean stuB);
	
	/**
	 * 修改学生信息(非空处理)
	 * 
	 * @param stuB
	 *            实体参数对象
	 * @return 修改操作结果
	 */
	public int updateStudentInfoNotNullByPrimaryKey(StudentBean stuB);
	
	///////////////////////多参数传参/////////////////////////
	/**
	 * 通过动态集合条件查询学生信息
	 * 
	 * @param stuB
	 *            动态集合条件实体对象
	 * @return 查询的学生信息结果集
	 */
	public List<StudentBean> selectStudentInfoByMultiParas(String stuName,String stuSex);
	/**
	 * 通过动态集合条件查询学生信息
	 * 
	 * @param stuB
	 *            动态集合条件实体对象
	 * @return 查询的学生信息结果集
	 */
	public List<StudentBean> selectStudentInfoByMapParas(Map<String,Object> map);
	
	/**
	 * 通过动态集合条件查询学生信息
	 * 
	 * @param stuB
	 *            动态集合条件实体对象
	 * @return 查询的学生信息结果集
	 */
	public List<StudentBean> selectStudentInfoByAnnotationParas(@Param("stuName")String strN,@Param("stuSex")String strS,@Param("stuBirthday")Date dateB);
	/**
	 * 通过动态集合条件查询学生信息
	 * 
	 * @param stuB
	 *            动态集合条件实体对象
	 * @return 查询的学生信息结果集
	 */
	public List<StudentBean> selectStudentInfoByAnnotationBeanParas(@Param("paramB")ParamBean paramBean,@Param("lstDepts")List<Integer> lstDepts);
}
